package dao;

import java.util.HashMap;

import model.Cliente;
import controller.ClienteController;

/**
 * Classe que modifica o HashMap de Clientes.
 * 
 * @author Pedro
 * @author Dayane
 */
public class ClienteDAO {
	/**
	 * Variavel para guardar as mensagens de erro ou de sucesso
	 */
	private static String msg = "";
	
	public static String getMsg(){
		return ClienteDAO.msg;
	}
	
	/**
	 * Apartir de um cpf, pegar um pedido.
	 * 
	 * @param HashMap<String, Cliente> clienteList
	 * @param String cpf
	 * 
	 * @return Produto produto
	 */
	public static Cliente loadByCpf(HashMap<String, Cliente> clienteList, String cpf){
		if (clienteList.containsKey(cpf)) {
			ClienteDAO.msg = "Cliente encontrado.";
			return clienteList.get(cpf);
		}
		ClienteDAO.msg = "Cliente nao cadastrado.";
		return null;
	}
	
	/**
	 * Incluir um cliente no hash. Pega os dados com scanner usando ClienteContoller
	 * 
	 * @param HashMap<String, Cliente> clienteList
	 * 
	 * @return boolean
	 */
	public static boolean incluir(HashMap<String, Cliente> clienteList) {
		Cliente cliente = ClienteController.toInclude();
		
		String cpf = cliente.getCpf();
		if (!clienteList.containsKey(cpf)) {
			clienteList.put(cpf, cliente);

			ClienteDAO.msg = "Cliente cadastrado com sucesso.";
			return true;
		}
		ClienteDAO.msg = "Cliente ja cadastrado.";
		return false;
	}

	/**
	 * Alterar um cliente no hash. Pega os dados com scanner usando ClienteContoller
	 * 
	 * @param HashMap<String, Cliente> clienteList
	 * 
	 * @return boolean
	 */
	public static boolean alterar(HashMap<String, Cliente> clienteList) {
		String cpf = ClienteController.askCpf();
		
		if (clienteList.containsKey(cpf)) {
			ClienteController.toUpdate(clienteList.get(cpf));		
			ClienteDAO.msg = "Alteracoes solicitadas feitas com sucesso.";
			return true;
		}
		
		ClienteDAO.msg = "Cliente nao cadastrado.";
		return false;
	}

	/**
	 * Incluir um cliente no hash. Pega os dados com scanner usando ClienteContoller
	 * 
	 * @param HashMap<String, Cliente> clienteList
	 * 
	 * @return boolean
	 */
	public static boolean excluir(HashMap<String, Cliente> clienteList) {
		Cliente cliente = ClienteController.toDelete(clienteList);
		
		if(cliente != null){
			clienteList.remove(cliente.getCpf());
			ClienteDAO.msg = "Cliente excluido.";
			return true;
		}
		ClienteDAO.msg = "Cliente nao excluido.";
		return false;
	}
}
